package org.example.one;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author zfj
 * @date 2022/4/22 -13:25
 * 消费者
 */
public class Consumer {
	//队列
	public static final String QUEUE_NAME = "hello";
	//接收消息
	public static void main(String[] args) throws IOException, TimeoutException {
		//创建连接工厂
		ConnectionFactory factory = new ConnectionFactory();
		//设置工厂IP 连接RabbitMQ的队列
		factory.setHost("192.168.78.135");
		//用户名
		factory.setUsername("admin");
		//密码
		factory.setPassword("admin");
		Connection connection = factory.newConnection();
		//获取信道
		Channel channel = connection.createChannel();
		//推送消息如何进行消费的接口回调
		DeliverCallback deliverCallback=(consumerTag,delivery)->{
			String message= new String(delivery.getBody());
			System.out.println(message);
		};
		//取消消费的一个回调接口 如在消费的时候队列被删除掉了
		CancelCallback cancelCallback=(consumerTag)->{
			System.out.println("消息消费被中断");
		};

		/**
		 * 消费者消费消息
		 * 1.消费哪个队列
		 * 2.消费成功后是否要自动应答，false代表手动应答
		 * 3.消费者未成功消费的回调
		 * 4.消费者取消消费的回调
		 */
		channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
	}
}
